<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Cosines 2</title>
    <link rel="stylesheet" href="../include/style.css">
  </head>
  <body>
    <header>
      Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
    </header>
    <canvas id="canvas" width="400" height="400"></canvas>
    <aside>Move mouse on canvas element.</aside>

    <script src="../include/utils.js"></script>
    <script src="./classes/segment.js"></script>
    <script>
    window.onload = function () {
      var canvas = document.getElementById('canvas'),
          context = canvas.getContext('2d'),
          mouse = utils.captureMouse(canvas),
          segment0 = new Segment(100, 20),
          segment1 = new Segment(100, 20);

      segment1.x = canvas.width / 2;
      segment1.y = canvas.height / 2;                                                       
      
      (function drawFrame () {
        window.requestAnimationFrame(drawFrame, canvas);
        context.clearRect(0, 0, canvas.width, canvas.height);
        
        var dx = mouse.x - segment1.x,
            dy = mouse.y - segment1.y,
            dist = Math.sqrt(dx * dx + dy * dy),
            a = 100,
            b = 100,
            c = Math.min(dist, a + b),
            B = Math.acos((b * b - a * a - c * c) / (-2 * a * c)),
            C = Math.acos((c * c - a * a - b * b) / (-2 * a * b)),
            D = Math.atan2(dy, dx),
            E = D - B + Math.PI - C;
        
        segment1.rotation = (D - B);

        var target = segment1.getPin();
        segment0.x = target.x;
        segment0.y = target.y;
        segment0.rotation = E;
        
        segment0.draw(context);
        segment1.draw(context);
      }());
    };
    </script>
  </body>
</html>
